May be my past answer will give you the idea:
Need Some Expert Help With Treeview Scan Please[
^]?
The answer is about the tree view, but think of it as an idea. In UI, you usually don't need to see all sub-directories at once. If so, you don't have to scan and load them all at once. You can only fetch the file structure data about the views currently presented on-screen. In this case, the time required to fetch all data per request can be short enough.
Even though the total time of fetching file information becomes longer (because the some portion of data is repeated again and again per each user request), the user experience is more important; few extra milliseconds per click on some UI control is not noticeable.
Even if you use a list instead of tree view, you still can use the same idea: you can have Next/Previous controls to show only partial data every time.
Also, mind you: if your try to get all directory tree at once from some really big directories, you can simply deplete you memory, even without any UI presentation — disks are bigger than RAM!
Sorry if it is not very relevant: unfortunately you didn't share enough detail on you ultimate goals and criteria (I remember you shared some, but I still cannot clearly see your design ideas).
—SA